package com.aasa.siccosap.dao;

import java.sql.CallableStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.sql.DataSource;

import oracle.jdbc.OracleTypes;

import org.apache.log4j.Logger;

import com.aasa.siccosap.bean.ColadaBean;


public class ColadaDAO extends accesoDao{
	static Logger logger = Logger.getLogger("ColadaDAO.class");
	public ColadaDAO()	throws accesoDaoException {
		super();
	}
	
	public ColadaDAO(DataSource dataSource) {
		super(dataSource);
	}

	public ArrayList<ColadaBean> consultarColada(String codigoCliente, String codigoProducto,
			String fechaInicio, String fechaFin) {
		ResultSet rs = null;
        //this.av_message = null;
        this.storedProcedure = "begin CQUAPPK_CERTIFICADO.CQUAPSP_CARGAR_NRO_COLADA(?,?,?,?,?); end;";
        ArrayList<ColadaBean> consultaColada = new ArrayList<ColadaBean>();
        try{
                this.conn = dataSource.getConnection();
                this.stmt = this.conn.prepareCall(storedProcedure);
                configuraParametrosConsultaColada(codigoCliente, codigoProducto, fechaInicio, fechaFin);
                //System.out.println(codigoCliente);
                //System.out.println(codigoProducto);
                //System.out.println(codigoColada);
                //System.out.println(fechaInicio);
                //System.out.println(fechaFin);
                this.stmt.execute();
                //this.av_message = (String)stmt.getObject(1);
                //if(this.av_message.trim().toUpperCase().endsWith(Constantes.NO_ERRORS)){
                        rs = (ResultSet)stmt.getObject(1);
                        while(rs.next()){
                        	//System.out.println("ENTRE AL WHILE");
                        	ColadaBean detalleColada = creaRegistroConsultaColada(rs, codigoCliente, codigoProducto);
                        	consultaColada.add(detalleColada);
                        }
                //}else{
                //    return null;
                //}
                
        }catch (Exception e){
                e.printStackTrace();
                return null;
        }finally{
        		close(this.conn, rs, stmt);
        }
        return consultaColada;
	}

	private CallableStatement configuraParametrosConsultaColada(String codigoCliente, String codigoProducto,
			String fechaInicio, String fechaFin)
    throws SQLException{              
        stmt.registerOutParameter(1, OracleTypes.CURSOR);
        stmt.setString(2, codigoCliente);
        stmt.setString(3, fechaInicio);
        stmt.setString(4, fechaFin);
        stmt.setString(5, codigoProducto);
        return(stmt);          
    }
	
	private ColadaBean creaRegistroConsultaColada(ResultSet rs, String codigoCliente, String codigoProducto) throws SQLException {
		ColadaBean bean = new ColadaBean();
        //bean.setNumColada(rs.getString("t$heat"));
		bean.setStrPv_numColada(rs.getString(1));
		bean.setStrPv_numProducto(codigoProducto);
		bean.setStrPv_codCli(codigoCliente);
        return bean;
	}
}
